Error correcting system



7 Sheets-Sheet 2 Filed Sept. 25, 1959 I: wait;

= Ea Q 55 was EEzwzs: m8

Cam

7 Sheets-Sheet 5 Filed Sept. 25, 1959 Oct. 19, 1965 c. M. MELAS 3,213,426

ERROR CORRECTING SYSTEM Filed Sept. 25, 1959 7 Sheets-Sheet 4 CLOCK SHIFT PULSE PULSE 1N BITS 1 FaFa F4 P1 P2PsP4 $12 111112 Oct. 19, 1965 c. M. MELAS 3,213,426

ERROR CORRECTING SYSTEM Filed Sept. 25, 1959 '7 Sheets-Sheet 6 DECODING 0F= PsP2P1P4T11DsDaD1T12DsD5D4D3D2D1 090501060504050201 FIG.6

CLOCK SH1FT 311 's F1F2F5F4 P1P: PsP4G1G2 T111T2 2345 7 9111 Oct. 19, 1965 c. M. MELAS ERROR CORRECTING SYSTEM 7 Sheets-Sheet 7 Filed Sept. 25, 1959 P3 P2P! P4114 09 08117112116115 [)4 D3 D2 04 011101100 LOCATING "111" TYPE ERROR REG. 0

COUNTER CORRECTOR 1 SHIFT PULSE START 20 RF, COMPARE 0 2 D N M V Tmw u S 1N n m n GS m MIVP E R RB m R 0 R R E FIG.

1100101 0 D0 011001001 010110 123456178 2 l DDDDDDUDD D HnMPDQnB 501100100100 0 0. M 1001- 10110 n a o o1oo1l ol o m |l0014 S & 1001l 10 l Sr 0 l l m Qv001 l u .1 oO 1 l I E 1111 .1 |n0 |o |110 w N 5o o1 0 M 4 110 W G 5110 m T C W W nu R 60 W 98T654 J21 0 0 6 NE ILHA nLZJAWrDST 0 2545 111111 SD! United States Patent Office Patented Oct. 19, 1965 3,213,426 ERROR CQCTlNG SYSTEM Constantin M. Melas, Saratoga, Calif., assignor to International Business Machines Corporation, New York, N.Y., a corporation of New York Filed Sept. 25, 1959, Ser. No. 842,272 14 Claims. (Cl. 340172.5)

This invention relates in general to systems for detecting, locating and correcting errors in binary coded information, and, in particular, to a system for detecting, locating and correcting 2 types of related errors in an information code group having N bit positions consisting of K +K parity bit positions and M data positions where N=2 -1 and M=N(K +K Various arrangements have been suggested in the prior art for checking coded information which has been translated between two points. These arrangements may be classified generally as either error detecting arrangements or error correcting arrangements. An example of an error detecting arrangement is the now well known parity check arrangement in which a parity bit position is added to the data bit positions of a binary code group. In this arrangement the binary value of the parity bit is chosen so that each code group has an even number of binary 1 bits. A similar known arrangement employs the same concept except that the value of the parity bit is chosen so as to provide an odd number of binary 1 bits in each code group. Such arrangements are, of course, limited to the function of merely detecting the presence of an odd number of errors. They cannot detect an even number of errors, and they cannot locate or correct any errors.

An example of an error correcting system known in the prior art is represented by the system disclosed by Hamming, et al. in US. Reissue 23,601 (US. 2,552,629). The theory of the Hamming code for single error correction may be readily understood by an analysis of the socalled parity check table. A parity check table corresponding to Table 2 in the above-mentioned reissued patent is reproduced below for convenience.

In the example represented by the above table a code group of 7 bit positions is assumed, D D representing data bit positions, and k k representing parity bit positions. This table is a convenient way to indicate that parity bit k checks bit positions of the code group indicated by an X; that is, k checks bit positions 1, 4, 5 and 7; parity bit k checks bit positions 2, 4, 6 and 7; and parity bit k checks bit positions 3, 5, 6 and 7.

If the code group of 7 bits is translated correctly, k k will all be 0 assuming an even parity check. However, if one bit of the translated code group is received in error the locator subword k k (referred to by Hamming as the parity subgroup) will not be all 0s, and, hence, a single error is readily detected. The particular bit position in which the detected error is located is indicated by the condition of the locator subword k k The locator words and the respective bit positions which they indicate are in error are tabulated below for convenience, and correspond to Table 4 in the above mentioned reissued patent.

Locator subword Error in bit position OHHHOHOO CHI-OHQHO ovoi- Hoov- The above table referred to as the locator subword table is based on the following reasoning and may be construed by reference to the parity check Table 1. To locate a particular bit position whose value has been received in error a reception parity check must be made over the same selected bit positions used in initially determining the value of each parity bit k k If a correct parity is received over the selected bit positions associated with each of the parity bits the locator subword k k is all Os. If an error occurs in bit position 1, k is affected and becomes a 1, while k and k are not affected since these parity bits do not check bit position 1. Hence, the locator subword for an error bit in bit position 1 is 100. Similarly, the locator subword for an error in bit position 2 is 010, and for an error in bit position 3, 001. An error in bit position 4 affects both k and k and hence the locator subword for an error in this bit position becomes 110. Similar reasoning may be employed to show that single errors in bit positions 5, 6 and 7 result in the locator subwords shown in Table 2. The obtaining of diiferent locator subwords for indicating the bit position Where a single error occurs is the basic concept on which the Hamming error-correcting system is based.

The prior art also suggests systems for detecting and/ or correcting multiple errors. For example, Hamming in the reissued patent mentioned above further discloses a system which corrects single errors and detects double errors. The parity check table for the Hamming system which corrects single errors and detects double errors is shown in Table 3.

hit subword Table 3 The parity check table shown in Table 3 is identical to the parity check table shown in Table 1, except for the addition of an 8th bit position to the code group, and the k, parity bit. Parity bits k k and k check the same bit positions as in Table 1. The k parity bit referred to as the all check parity bit checks each of the 8 bit positions.

The locator subwords (which correspond to Hammings parity subgroups) for errors in particular bit positions are tabulated below in Table 4, and correspond to Table 6 of the reissued patent.

* 1, 2 or all of k1, k and k will have a 1 value.

If there are no errors in a code group after it is translated, all of the parity bits k k will be satisfied and the locator subword will be 0000. When a single error occurs in any bit position of the code group two separate indications are obtained. First, the all check parity bit k will not be satisfied, and therefore becomes a 1 indicating a single error. Second, the k k parity bits of the locator subword will indicate the location of the single error, the 000 value of k k now indicating an error in the eighth bit position of the code group. If, on the other hand, two errors have occurred the all check parity bit k is satisfied, but at leastone of the parity bits k k or k will not be 0. Stated somewhat differently it can be determined by reference to Table 4 if a single error has been made by looking at the locator subword consisting of k k parity bits. If the locator subword is not all Os a single or double error has been made. If the k.; parity bit is a 1, this indicates a single error, and parity bits [c -k indicate the bit position in the code group where the single error has occurred. If, on the other hand, parity bit k is and' one or more of the parity bits k -k are 1, this indicates that two errors have been made, but no information is available from the locator subword table as to the location of the two errors. This system is therefore referred to as a single error, correcting-double error detecting system (SEC-DED).

The prior are also discloses an arrangement for correcting single errors and double adjacent errors. A description of thiscode may be found in Technical Report No. 51 dated December 30, 1958, by N. M. Abramson entitled, A Class of Systematic Codes for Non-Independent Errors, published by Stanford University, Stanford, California. In FIG. 1 of this report a parity check table is illustrated employing a code group of 7 bit positions consisting of 4 parity bit positions and 3 data bit positions. The table is reproduced below for convenience.

Table Code group position Parity Locator Bit subword X X X X X X X I X X X Table 5 is similar inform to the parity check table disclosed by Hamming, except for a change in notation. P P and P correspond respectively to the parity bit notations k k employed by Hamming. The above table indicates that:

P checks bit positions 1, 2 and 4 (D D and P P checks bit positions 2, 3 and 5 (D D and P P checks bit positions 3, 4 and 6 (D D and P P checks bit positions 1 through 7 (D through P The main distinguishing feature between the Abramson parity check table as shown in Table 5, and the parity check table disclosed by Hamming (Table 3) is that the bit positions checked by each parity bit k k in the Hamming table are arranged arbitrarily after two conditions are met. As explained by Hamming the parity check table for a single error correcting system satisfies two conditions. The first is that each bit position of the code group must be in a locator subword. The second condition is that each bit position must have a different combination of parity bits k -k A different way of stating the second condition is that the locator subword k k (or P P for each bit position of the code group must be different.

In the parity check table (Table 5) disclosed by Abramson the two conditions of the Hamming parity check table are met, but a third condition must also be satisfied. This third condition is that the bit positions checked by a parity bit are determined in accordance with an m-sequence. The term m-sequence is known in the art and may be defined by the output signal of one stage of a maximal length binary shift register having R stages. An m-sequence is merely a unique series of 0s and ls of 2 l binary digits arranged in a predetermined order. A true m-sequence satisfies the condition that:

where 2 1 is the number of binary digits in the sequence before it repeats itself. The above equation may also be expressed as Where C C each represent a binary coefficient 0 or 1 determined from reference tables referred to as a Table of Irreducible Polynomials Over Galois Field (2) Through Degree 19, by R. W. Marsh, a publication of the National Security Agency, dated October 24, 1957. C0- eflicients C C in eifect determine the feedback path of the maximal length binary shift register.

The number of different m-sequences that are obtained from an R stage maximal length binary shift register is tabulated below:

Table 6 Number of Stages R:2 3 4 5 6 7 8 9 10 Different m-sequences 1 2 2 6 6 18 16 48 60 The number of different m-sequences obtained from an R-stage m-sequence generator also corresponds to the number of diiferent groups of coefficients C C which are available for m-sequences.

From the above table it will be seen that two different m-sequences may be obtained from a 4-stage maximal length linear binary shift register. When C C correspond respectively to 1100, the following m-sequence is obtained:

When C -C is 1001 the other m-sequence is obtained With relation to the general Equation 1 for an msequence, the first sequence shown above is expressed specifically as a =a +a In nonmathem-atical language this specific equation expresses the fact that the value of the fifth binary digit (a =the mod. 2 sum of the values of the first binary digit (a and second binary digit (0 For example, the fifth digit in the m-sequence (1) is obtained by binary addition (mod. 2) of the first 5 digit and the second digit (1). The following digits of the m-sequence are obtained in the same manner until 2 1 (15) digits are obtained. The m-sequence then repeats itself.

The second m-sequence is obtained in a similar manner, but since the coeflicients C C are different, 1001, the specific equation becomes a :a +a In other words the value of first digit (0) plus the value of the fourth digit (1) will give the value of the fifth digit (1).

It was stated previously that the primary distinction between the systems of Hamming and Abramson was that the Abramson parity check table must satisfy the additional condition that the bit positions checked by a parity bit are determined by an m-sequence. The bit positions checked by parity bit P of Abramson are shown below in relation to the m-sequence for a threestage m-sequence generator and also in relation to an inverse m-sequence which is merely the complement of the true m-sequence.

It will be noted that parity bit P checks the bit positions indicated by the binary 1 bits of the inverse msequence. It will also be noted from Table that parity bit P checks bit positions corresponding to the same inverse m-sequence shifted to the right by one position relative to parity bit P and that P checks bit positions corresponding to the same inverse m-sequence shifted to the right by one bit position relative to parity bit P The fact that the bit positions checked follow an inverse m-sequence results in a fairly simple single error correction system in that the locator subwords may be readily stored in a 3-stage maximal length binary shift register. In addition to this simplification of the system the arrangement of the parity check table allows correction of double adjacent errors in that errors in successive pairs of bit positions (1 and 2, 2 and 3, 3 and 4, etc.) cause a group of locator subwords to be generated corresponding to the true m-sequence originally employed but which is shifted a fixed amount relative to the original m-sequence. This is shown in Table 7 below by representing the locator subwords for single errors and double errors in a 7 bit code group.

Table 7 Error Locator Complement Locator in hit subword oi locator Error subword position subword in bit positions a P2 P1 P3 2 P1 P3 P2 P1 The locator subwords for double adjacent errors have been obtained by binary addition of the locator subwords for single errors in the affected bit positions. For example, the locator subword for a double adjacent error in pit positions 1 and 2 is 010, obtained by adding binarily the locator subword for a single error in bit position 1, (001) tothe locator subword for a single error in pit position 2, (011). Table 7 shows that the complement of each locator subword for a single error corresponds to the locator subword for a double adjacent error starting in another bit position. For example, a single error in bit position 2 has the locator subword 011 (P P and P The complement of this locator subword is which corresponds to the locator subword 100 generated by a double adjacent error in bit positions 6 and 7. This is a shift of four positions between the two columns 2 and 4. Abramson shows that the four positional shift relationship is maintained for all the bit positions of the code group and this may be verified by Table 7. Since the locator subword tables for both single and double adjacent errors are related, they may be generated quite simply by the same maximal length binary shift register.

The process of double error correction merely involves firs-t detecting between no error, a single error and a double adjacent error. One value of the all check parity bit P indicates a single error, while the other value indicates either no error or a double adjacent error. However, the last ambiguity is resolved since the locator subword P -P for the no error condition is unique (000) compared to the locator subwords P -P for double errors, where P -P include at least one binary 1.

Single and double adjacent errors may therefore be corrected by the Abramson system, and since it is a systematic approach it is quite simple to expand for code groups having any number of elements.

The present invention is directed to the detection, location and correction of multiple related errors. A group of diiferent type errors are considered related if each of the errors results from the same error producing condition. For example, a noise burst signal which is 3 bit positions wide can cause four different types of related errors depending upon the value of the information bits subjected to the noise burst signal. For instance, if the values of the information bits affected are 000, respectively, it will be seen that a triple adjacent error 111 will result. Similarly, if the information bits affected are 100 a double adjacent error results. The noise burst signal causes each bit position which has a 0 value to change to a 1. -It will therefore be seen that a noise burst signal 3 bit positions wide can produce the following four types of related errors; a signal error (1) a double adjacent error (11); a double nonadjacent error (101), and a triple adjacent error (111).

Likewise an interruption in the transmission of the code group during 3 bit positions caused, for example, by switching between telephone lines, also produces the same type of related errors, since the interruption in effect changes each bit position having a 1 value to a 0 value. Since a very large percentage of errors occur during the transmission of binary data are of the related type, a system which will correct all related errors is quite efiicient.

The system of the present invention is characterized by the use of two distinct sets of parity bits to locate the error within the received code group and to determine the error type. One set of parity bits, referred to as the error type parity bits, is employed in determining the type of error; and the other set, referred to as locator parity bits, is employed in determining the location of the error. The bit positions checked by each locater partiy bit are determined in accordance with a first m-sequence, while the bit positions checked by one error type parity bit are determined by a second m-sequence. If K is equal to the number of locator parity bits and K is equal to the number of error type parity bits, 2 types of related errors may be corrected in a code group of N bit positions consisting of M data bit positions and K -i-K parity bit positions were N=2 -1.

The basis on which the present system operates may be seen from the parity check table below and the tabulation of the locator subwords in Table 9 for each of the various types of errors which may be corrected.

On the The foregoing and other objects, features and advantages of the invention will be apparent from the bodiment of the invention, as illustrated in the accompanying drawings.

In the drawings:

FIGS. 14: and 1b are block diagrams illustrating diapresent invention FIG. 2 is a schematic circuit illustrating the encoder employed in FIG. 1;

FIG. 3 is a chart employed in explaining the operation FIG. 4 illustrates a parity check table of the particular example chosen to illustrate the operation of the system and corresponds to Table 8 in the specification;

FIG. 5 is a schematic View illustrating the decoder FIGS. 5a and 5b are views illustrating components of the decoder shown in FIG. 5; and

FIGS. 6-60 are charts employed in explaining the operation of the decoder.

Referring to the drawings, and particularly to FIGS. 1aand lb, the error correcting system comprises generally an encoder 11 shown in FIG. 1a, and a decoder 12 shown in FIG. 1b, which are interconnected in data translating relationship by some suitable data translating means 13.

nected to a source 14 of binary coded data, while the output of the decoder is adapted to be connected to a device 15 which utilizes the data translated and checked by the system.

The data translating means 13 interconnecting the encoder 11 and decoder 12 may take several forms depending on the particular application involved. For example, the translating means 13 may represent either a commercial telephone link or a radio telephone link connecting located data processing center in which event the encoder 11 of the error correcting system is located in proximity with the remote input station and the decoder 12 is associated with the central data processing center.

shown in FIG. 1b.

75 other hand, the data source 14 and the utilization device For ex- Table 8 The result is 010111, which corre- 45 of the encoder shown in FIG. 2;

M OUOOOOOOOOOOOOO m OOOOUOOOUOOOOOO H 110001001101011 d 1 9 H 3 P 100010011010111 nu 000100110101111 u 001001101011110 M 011011011011011 1 3 w 110110110110110 P n X h n H 111100010011010 2 X X P 0 m 9 1 3 P 111000100110101 1 P X X um 110001001101011 XXX 1 H P 100010011010111 1 w m 110110110110110 9 9 m k 1 D b 7 101101101101101 a DB U 101011110001001 1 1 7 n v 010111100010011 D XXX X" 2 P 101111000100110 2 1 P 011110001001101 0 D X X XX 2 n r 101101101101101 5 u D X m 011011011011011 m U 100110101111000 1 3 n 001101011110001 U 011010111100010 2 rm t 0.1 rl b rr Ewh S Table 9a represents the locator subwords for single er- Tables 9b9d represent the locator subwords for double adjacent errors, double nonadjacent errors, and 35 following more particular description of a preferred emtriple adjacent errors, respectively. The locator subword Tables 9b9d are obtained from the locator subword It will be seen from Table 9 that the locator subword Tables 9b, 9c and 9d are merely shifted versions of the single error locator subword Table 9a and that each table is shifted a different amount.

If one of the four types of related errors occurs in any of the fifteen bit positions of the code group, it is It is therefore an object of the present invention to provide an improved system for checking theaccuracy of binary data which is translated between two points.

Another object of the present invention is to provide a system for correcting multiple related errors in a translated code group.

A further object of the present invention is to provide an error correcting system in which the number of parity 70 one of a plurality of remote input stations to a centrally bits employed to correct a predetermined number of different errors is kept to a minimum.

A still further object of the present invention is to provide an improved method for correcting various types rors.

Table 9a for single errors by mod. 2 addition of the locator subwords for the bit positions in error.

ample, the locator subword for a double adjacent error 40 grammatically an error correcting system embodying the starting in bit position 1, as shown in Table 9b is 010111.

This is obtained by binary addition of the locator subword for a single error in bit position 1 (which is 100101) to the locator subword for a single error in bit position 2,

(which is 110010).

sponds to the first locator subword in Table 9b. Similarly,

the locator subwords for a double nonadjacent error starting in bit position 1 is obtained by binary addition of the locator subword for a single error in bit positions 1 and 3 (10010169011011 therefore possible to determine its location from Table 9,

since if no error occurs the six parity bits P 1r will all be 0. If P 1r are not all Os the particular sequence of 0s and 1s, when compared with Table 9, will indicate In practice the input of the encoder is adapted to be conthe error type and the bit position where the error begins.

of related errors in a binary coded word.

may both be physically located in the same data processing unit, in which event the data translating means 13 interconnecting the encoder 11 and decoder 12 would employ in its simplest form a single conductor.

As shown in FIG. 1a, the encoder portion of the error correcting system functions generally to transmit a series of code groups each having N bit positions con sisting of K locator parity bit positions, K error type parity bit positions, and M data bit positions Where N =2 1 and where the bit positions to be checked by each of the locator parity bits are determined by a first m-sequence, and the bit positions checked by the error type parity bits are determined by a second msequence.

The encoder 11 in its simplest form may therefore be considered as means for transmitting to the decoder 12, a code group having N bit positions consisting of K 1ocator parity bit positions, K error type parity bit positions and M data bit positions, each locator parity bit having a binary value determined by the mod. 2 sum of the binary values of subgroups of said N bit positions selected in accordance with a first m-sequence, and each transmitted error type parity bit having a binary value determined by the mod. 2 sum of the binary values of different subgroups of said N bit positions selected in accordance with a second m-sequence.

The encoder as shown in FIG. 1a operates to transmit a code group having fifteen bit positions consisting of four locator parity bit positions, two error type bit positions and nine data bit positions. The encoder as shown operates in a serial type manner although parallel type operation is also possible.

The encoder as shown in FIG. 1a comprises generally a conventional shift register 30, means 31 for generating four locator parity bits in accordance with a first m-sequence, means 32 for generating two error type parity bits in accordance with a second m-sequence, a source 33 of shift pulses, a source 34 of clock pulses, and means 35 for sequentially transmitting the data bits, the locator parity bits and the error-type parity bits in a predetermined order.

FIG. 2 illustrates the details of the encoder 11 shown in block form in FIG. 1a. While FIG. 2 may also be considered a block diagram, each of the blocks shown represent basic circuits well known in the art. Since the specific details of each of the blocks shown in FIG. 2 form no part of the present invention they are not shown in the drawings or described in the specification. Reference may be had to many of the standard electronic texts for the details and operation of the specific circuits shown. It is believed that FIG. 2 illustrates the organization of the various functional components of the encoder more clearly and allows a clearer understanding of the invention than if the specific circuits were illustrated.

Referring to FIG. 2, the shift register 30 as illustrated com-prises nine stages, =301 through 309, and is therefore capable of temporarily storing up to nine separate bits at any one time. The source of data signals 14 is connected to the first stage 30-1 of the shift register 30 through an input AND gate 41 which has its other terminal connected to the source 34 of clock pulses. Each stage 30-1 through 309 of the register 30 has a shift input terminal 42 connected to the source 33 of shift pulses. The shift pulses and the clock pulses have substantially the same frequency but are displaced in phase an amount to allow entry of a data bit between shift pulses. Any suitable source of clock pulses may be employed. Similarly, any suitable source of shift pulses may be employed. In practice the shift pulses may be obtained from the clock pulse generator by merely delaying one group of signals relative to the other for a predetermined time.

The nine bits of data to be transmitted to the decoder are supplied to the shift register 30 under the control 16 of clock pulses 1-6 and 810. The contents of the shift register 30 is shifted to the right under the control of shift pulses 1-19. No data is supplied to the shift register 30 during clock pulse time 7 in order to reserve the seventh bit position of the transmitted code group for the 11- error-type parity digit.

The status of the shift register at the various clock times may be seen by reference to the :chart of FIG. 3 which is employed in explaining the operation of the encoder.

The :means 31 for generating the locator parity bits comprises an m-sequence generator 50, a sampling circuit 51 and .a four-stage storage register 52. The m-sequence generator 59, as shown, is similar to a conventional fourstage shift register except that a feed-back path is established through the exclusive OR circuit 53 from the output of the third and fourth stages F and F back to the first stage F The output of each stage P of the illustrated m-sequence generator provides the same msequences. However, the m -sequences are shifted relative to each other by one position. The m-sequences may be seen in FIG. 3, where the output of each stage F 4 of the m-sequence gc erator is tabulated. It will be noted that each of the columns F -F define the same fifteen digit m-sequence. However, the m-sequence in columns F F and F are shifted relative to the m-sequence in column F The particular m-sequence illustrated may be definied by the equation a +a =a The output of the m-sequence generator is supplied to the sampling circuit 51. The output signal from generator 50 at the end of any shift pulse may be considered as a four bit sampling signal which conditions the sampling circuit 51.

The sampling circuit 51 comprises four separate AND gates 56. Each AND gate 56 has one terminal connected to the data source through AND gate 41. The other terminal of each AND gate 56 is connected respectively to the outputs of the four stages F F of the msequence generator 50. When the output signal of a particular stage F is in a high condition the associated AND gate 56 is conditioned allowing a data bit D to be supplied to the storage register 52.

The function of the m-sequence signals from the output of the four stages of the m-sequence generator may be seen by reference to the parity check table of FIG. 4 constructed for the illustrated example. It will be seen that the horizontal rows in FIG. 4 designated P P are identical to the vertical columns F F respectively, of FIG. 3 if an X is substituted for a 1 and a blank for a 0. As explained previously in connection with parity check tables, the X indicates that the particular parity bit P checks the bit positions marked by the X (D D D D 11- D D and itself). The output signal of the F stage of the m-sequence generator 50 performs this selective sampling operation. The output signals of the other stages F -F provide similar selective sampling operations.

The locator parity bit storage register 52, as shown, comprises four separate one-stage binary counters. In practice each stage may represent a conventional trigger or flip-flop which changes back and forth between states in response to an input pulse from the sampling circuit 51. Each of the stages is, in effect, therefore a simple binary counter which keeps count of the number of 1 bits in the bit positions determined by the sampling signal from the m-sequence generator 50.

Since the locator parity bits P -P check the bit positions assigned to the error type parity bits 11- and r the states of the locator parity bits P P after checking the data bits are designated P P in the table of FIG. 3, and are modified after the error type parity bits 1r -1r are computed. The means 54 for modifying the states of these transistory locator parity bits P' -P' under the control of the final error-type parity bits 12' 1r is described further on in the specification after the description of the means 32 for generating the error type parity bits.

As shown in FIG. 2 the means 32 for obtaining the error type parity bits 1r -1r is similar to the means 31 employed in obtaining the locator parity bits P -P Means 32 comprises an m-sequence generator 61, a sampling circuit 62, and an error type parity bit storage register 63. The m-sequence generator 61 has two stages G and G and operates similarly to generator 50. The m-sequence generator 61 provides the m-sequence tabulated in FIG. 3 in columns G G This sequence is only three bits long and then repeats itself.

The sampling circuit 62 is similar to sampling circuit 51 and comprises a pair of AND gates 66. Each AND gate 66 has one terminal connected to an OR circuit 67 which is supplied with data bits from the input AND gate 41 and with the transistory locator parity bits P' -P The other terminals of AND gate 66 are connected respectively to the output terminals of the two stages G and G of the m-sequence generator 61. AND gates 66 are therefore conditioned by the selective sampling signals of the m-sequence generator 61.

The outputs of the AND gate 66 are connected to the respective stage 11 -1 of the error type parity bit storage register 63 which functions in the same manner as the storage register 52. That is, each stage 7T1 and 1r of the storage register 63 keeps count of the number of binary 1 bits in the bit position of the code group selected by the m-sequence sampling signals from the m-sequence generator 61.

When the final error type parity bits have been obtained, they are employed to modify the transitory locator parity bits P '-P It can be seen from the parity check table in FIG. 4 that the 11- bit position is checked by P P and P therefore, the transitory locator parity bits P' P and F are modified by adding 1 to each of the party bits if 1r as finally computed is a l. The means 54 for modifying P P' and P under the control of the value of 1r parity bit comprises an AND gate 70 having an input terminal connected to the output of the 1r stage of the storage register 63 and the other input terminal connected to the clock pulse source 34. The output of the AND gate 70 is connected to the respective inputs of the P P and P stages of the locator parity storage register 52 through the OR circuits 57.

Similarly, it will be seen in the parity check table of FIG. 4 that the 1r bit position of the code group is checked by locator parity bits P and P Therefore, the transitory parity bits P' and PC; are also modified by means 54 by adding 1 to both of these bits if the final value of the 7T1 parity bit is a 1. The means 54 for modifying P' and P' under the control of the 1r parity bit includes AND gate 71 which has one input terminal connected to the 1r stage of the storage register 63 and the other input terminal connected to the clock pulse source 34. The output of the AND gate 71 is connected to respective inputs of the P and P stages of the storage register 52 through the OR circuits 57.

The means 35 for transmitting the data bits D D the final locator parity bits P -P and the error-type parity bits 111 and 11- in a predetermined order as shown in FIG. 2 comprise a series of seven AND gates 80-86 and a seven terminal OR gate 87. AND gate 84 has one input terminal connected to the output of the last stage 30-9 of the shift register 30, while the other terminal is connected to the clock pulse source 34 and receives clock pulses -15 and 17-19. Each of the AND gates 80-83 has one terminal connected to the respective output terminals of the locator parity bit storage register 52, while each of the AND gates 85 and 86 has one terminal connected to the respective output terminals of the errortype parity bit storage register 63. The other terminals of the AND gates 80-83, and 85 and 86 are connected to the source 34 of clock pulses and each receives a particular clock pulse. These particular clock pulses supplied to the seven AND gates are designated on the respective input lines thereof.

Before proceeding with the detailed description of the decoder, an example of the encoding operation will be explained.

The operation of the encoder shown in FIG. 2 may be seen by reference to FIG. 3. It will be assumed that a word consisting of nine data bit positions Dl-Dg is to be encoded and transmitted to the decoder of FIG. 1b along with four locator parity bits and two error-type parity bits. The word to be encoded is shown in FIG. 3 along with the state of the m-sequeuce generators and the parity bit registers at the start of the encoding operation. As shown the condition of the four stages F -F of the first m-sequence generator 50 prior to starting is 0010 respectively while the condition of the two stages G and G of the second m-sequence generator 61 prior to starting is 11 respectively. The parity bit storage registers 52 and 63 and the shift register 30 are set to all Os. Clock pulses C1-C6 and C8-C1O are supplied to the input AND gate 31 while the m-sequence generators 50 and 61 are supplieAl with shift pulses 1-15. Shift register 30 is supplied with shift pulses Sl-Sl9.

The condition of the first m-sequence generator 50 at the end of the first shift pulse, as shown in FIG. 3 on the line containing the first shift pulse, is 1001. As a result the first and fourth AND gates 56 of the sampling unit 51 are conditioned, which allows the first data bit D to be supplied to the P and P stages of the storage register 52 during the first clock pulse time C1.

The condition of the G and G stages of the second m-sequence generator 61 at the end of the first shift pulse is also shown in FIG. 3. As shown G is O and G is 1, which allows the first data bit to be supplied to only the 1r stage of the storage register 63 during the first clock pulse time Cl, since only right hand AND gate 66 of the sampling circuit 62 is conditioned.

The first data bit D is a 0 and, hence, P -P and 1: and W2 stages of the registers 52 and 63 remain all 0s, and the first stage 30-1 of the shift register contains a 0. The second shift pulse applied to the m-sequence generator changes the F F stages of the m-sequence generator 50 to 1100 and G and G stages of the second m-sequence generator 61 to 10. The second shift pulse also transfers the condition of stage 30-1 of the shift register 30 to stage 30-2. A second data pulse D which is a 1, is therefore applied to the shift register, the P and P stages of the locator storage register, and to the G stage of the errortype storage register 63 during the second clock pulse time.

The above operation is continued until the code group of nine data bits has been encoded to provide a code group of fifteen bits. During clock pulse times C7 and C11 no data is supplied to the shift register 30 or to the sampling circuits 51 and 62 in order to allow for insertion of the error-type party bits 11' and 1r During clock times C12- ClS the transitory locator parity bits P -P' are supplied to the sampling circuit 62. The transitory locator parity bits P' -P' are modified under the control of the finally generated 1r error-type parity bit during clock pulse time C16 and the P' F and P' transitory parity bits are modified under the control of the W error-type parity bit during clock time C17.

Clock pulses CID-C24 are employed to clock the data bits from the last stage of the shift register 30-9 and from the parity bit storage registers 52 and 63 in a prearranged order in accordance with the parity check table. The encoded word is then transmitted to the decoder in any suitable manner. The next word to be encoded may then be supplied to the encoder and the cycle repeated.

The decoder 12 for the error correcting system, as shown diagrammatically in FIG. 1b, comprises generally means including an N stage shift register 101 for receiving the transmitted code groups, means 102 for making a reception parity check over bit positions determined by the first m-sequence, means 103 for making a reception parity check over bit positions determined by the secnd m-sequence, means 194 jointly under the control of the generated reception parity bits for detecting if an error occurred, means 105 for indicating the type of error detected, and means 106 for correcting the indicated error. A source 107 of clock pulses and a source 108 of shift pulses may also be provided in the decoder 12.

FIG. illustrates schematically the decoder shown in block form in FIG. lb. The means 102 for making a reception parity check over bit positions determined by said first m-sequence comprises a first m-sequence generator 110, a sampling circuit 111, and a four-stage register 112. The means 103 for making a reception parity check over bit positions determined by the second m-sequence, as shown in FIG. 5, comprises an m-sequence generator 121, a sampling circuit 122, and a two-stage storage register 123. The sampling circuits 111 and 122 are identical to the sampling circuits 51 and 62, respectively, of the encoder 11, and are supplied with the received signals through the decoder input AND gate 114, which is conditioned during clock pulse times ClCl5 provided the previous word has been received correctly. The decoder input AND gate 114 may, in practice, comprise the output of a data signal receiver.

Each stage of the storage registers 112 and 123 therefore counts the number of binary ls in the bit positions determined by the respective m-sequences. The storage registers 112 and 123 will contain all Us if the fifteen bit code group is received correctly. If an error has occurred at least one of the stages P P or 1r or M will contain a 1. The output of the decoder input AND gate 114 is also connected to the N stage shift register 191, which is supplied with shift pulses Sl-SlS through an AND gate 101A to shift the received code group into register 101 from left to right. The other terminal of AND gate 1431A is supplied with a no-error signal which conditions AND gate 1111A.

The means 104 for providing an error signal if an error has occurred comprises in this instance a six terminal OR circuit 136, an AND gate 131, an error trigger 132 and a delay unit 133. The respective outputs of the stages P P of the locator parity bit storage register 112 and the stages 1r and 1r of the error type storage register 123 are connected to the inputs of OR circuit 131) whose output is connected to one input terminal of AND gate 131. AND gate 131 is conditioned by a delayed clock pulse C supplied to the other input terminal through delay unit 133. The output terminal of AND gate 131 is connected to one input terminal 132a of the error tn'gger 132. Error trigger 132 has one output terminal 1325 which is normally high indicating no error, and a second output terminal 1320, which is normally low indicating an error. An error pulse applied to the input terminal 132a from the OR circuit 130 causes the output terminal 13212 to change from a high to a low state. The error trigger 132 is reset by an S30 pulse after the type of error detected has been determined.

Means 105 for indicating the type of error detected, as shown in FIG. 5, comprises a counter 140, a counter control trigger 141, a PF compare unit 142 and a 1r-G compare unit 143. The counter 141) is a conventional binary counter which counts from 03 in response to driving pulses $16-$30. Driving pulses S16S3O are sup plied to the counter through an AND gate 144, which is conditioned under the control of the counter control trigger 141. Driving pulses S16S30 correspond to shift pulses SlSl5 except that they occur after an error has been detected. Shift pulses $16530 are obtained from the source of shift pulses 1113 by gating shift pulses S1 S15 with an error signal from error trigger 132.

The output terminal 141k of the counter control trigger 141 is normally low. A PF compare signal applied to the input terminal 141a changes the state of the trigger 141 causing the output terminal 141]; to change to a high state, thereby conditioning the AND gate 144. A 1r-G compare signal applied to the input terminal 1410 resets 14 the trigger 141 to its initial state where output terminal 141k is low.

The P-F compare unit 142 for supplying the PF compare signal to the control trigger 141 is shown in FIG. 5a. In this instance the P-F compare unit comprises four exclusive OR circuits 147 and a four-terminal AND gate 148. Each exclusive OR circuit 147 is supplied With an output signal from the corresponding stages P P of the locator parity bit-register 112 and F F stages of the m-sequence generator 110. The function of an exclusive OR circuit is to provide an output signal only when the two input signals are the same. AND gate 148 thereby functions to supply the PF com pare signal to turn On the counter control trigger 141 when the condition of the locator storage register 112 and the m-sequence generator 111) are identical.

The output line 149 from the storage register 112 and the output line 150 from the m-sequence generator each represent four lines from the respective stages of the register and the m-sequence generator to the comparing unit 142.

The 1r-G compare unit 143 is similar to the PF compare unit, and, hence, is not shown in detail in the drawings. The n-G compare unit 143 functions to supply a 1r-G compare signal to turn Off the counter control trigger 141 when the condition of the error-type storage register 123 corresponds to the condition of the second m-sequence generator 121. The counter therefore counts the number of shift pulses which occur during the time the PF compare signal is generated until the 1rG compare signal is generated. The state of the counter 140 indicates the type of error that has occurred and is supplied to the error correcting means 196. In this instance a O-count condition indicates a single error, a l-count condition indicates a double error, a 2-count condition indicates a double nonadjacent error, and a 3-count condition indicates a triple adjacent error.

The error correcting means 106 comprises a reversible counter 156, a count modification unit 157, a corrector register 158 which is connected to the shift register 101 through a gate unit 1586 and a corrector modification unit 159.

The reversible counter 156 is supplied with forward driving pulses under the control of a forward drive trigger 161, and counts from 014. The forward driving pulses are obtained through AND gate 160 which has one terminal supplied with shift pulses S16S30, and the other terminal connected to the output terminal 161]) of the trigger 161. Output terminal 161]) is normally low and is raised to a high condition when the trigger changes state in response to an error signal supplied to terminal 161a from the error trigger 132. The trigger 161 is reset to its initial condition in response to a P-F compare signal. The counter 156 is supplied with reverse driving pulses under the control of the reverse drive trigger 166. Reverse drive trigger 166 has an output terminal 16617 connected to one input of AND gate 167 whose other input terminal is supplied with shift pulses SlS15. Terminal 16612 is normally low and is raised to a high condition when the trigger 166 changes state in response to an S30 pulse. The trigger 166 is returned to its original condition when the counter returns to a 0 count condition.

The count modification unit 157 functions to change the state of the counter a predetermined amount depending upon the state of the error-type counter 140 of the error determining means 105. The count modification unit 157 in this instance causes the counter to retreat four count positions if a double adjacent error is determined, retreat an additional four count positions if a double nonadjacent error is determined, and retreat still further another two positions if a triple adjacent error is determined. Any suitable pulse generator for supplying the modifying pulse may be employed in the count modification unit 157.

The corrector modification unit 159 functions to insert a corrector into the corrector register 158 in accordance with the type of error indicated by the error-type indicating means 105. The corrector modification unit supplies particular signals to the respective stages of the corrector register 158 in order that the particular type of error detected will be corrected.

The corrector register 158, as shown in FIG. 5, is connected to the last three stages 13-15 of the shift register 101 through gating unit 158G, which is conditioned in response to a signal from the correct-command unit. The correct-command unit includes .a correct-command trigger 164 and AND gate 1165. Terminal 16 1b of tri ger 164 is connected to AND gate 165, which is also supplied with a signal from the reversible counter 155 when the counter reaches a l-count condition. Terminal 1164b is normally low and is raised to a high condition when trigger 164 changes states in response to an S30 signal. Terminal 164 is returned to its initial state when the counter 155 reaches a O-count condition.

Shift pulses Sl-SlS supplied to the shift register 101 cause the fifteen bit code group to be shifted to the utilization device 15 through the transfer means 10? when AND gate 1011A is conditioned by the no error signal from error trigger 132. The decoder is arranged so that when an error is determined, it is corrected as the data is being transferred out, the last three stages 13, 14 and 15 of the shift register serving as the correcting station. The correct command is supplied to the corrector register gate unit 1586 when the bit position in which the error starts is in stage 15 of the shift register 101.

The transfer means 109 in this instance comprises an OR gate 170, a delay unit 171, and a pair of AND gates 172 and 173. AND gates 172 and 173 each have three input terminals. One terminal of each AND gate is connected to the last stage of the shift register 101. A second terminal of each AND gate is connected to terminal 132!) of error trigger 132. The third terminal of AND gate 172 is supplied with clock pulses C1-C6, while the third terminal of AND gate 173 is supplied with clock pulses C8C10. The output of AND gate 172 is connected to the utilization device 15 through a one bit delay unit 171 and OR circuit 170. The output of AND gate 173 is connected to the utilization device 15 directly through OR gate 170. The nine data bits of the transmitted code group are therefore always supplied to the utilization device 15 Without error.

The operation of the decoder shown in FIG. 5 may be seen by reference to FIGS. 66c. FIG. 6 is a chart illustrating the condition of the locator parity bit storage register 112, the first m-sequence generator 110, the error type parity bit storage register 123, the second m-sequence generator 121, and the shift register 101 at various times during a normal cycle of the decoder. The chart of FIG. 6 illustrates the operation of the decoder when, for example, the fifteen bit code group transmitted from the encoder 11 is received correctly.

Assuming the previous code group was received Without error, the source of clock pulses 107 supplies clock pulses C1-C15 to the decoder input AND gate 114, which gates each bit of the new code group to the first stage of the shift register 101, the sampling circuit 111, and the sampling circuit 122. Shift pulses $11515 from the source of shift pulses 108 are supplied to the shift register 101 through AND gate 101A, so that the received code group is shifted into the register from left to right. Shift pulses S1-S15 are also supplied to the first and second m-sequence generators 110 and 121, respectively. As each bit of the code group is received it is supplied to the sampling circuits 111 and 122 which have been conditioned by the output signals from the m-sequence generators 110 and 121. These output signals sequentially condition the sampling circuits 111 and 122 so that a reception parity check is made over the bit positions of the received code group determined by the msequences employed in the encoder. Hence, if the fifteen bit code group is received correctly, each of the parity bits P 1r will be 0. The output of OR gate 130 is therefore low, which prevents the delayed C15 pulse from turning On error trigger 132. Since the no error signal from output terminal 13212 is high, the next group of clock pulses Cl-ClS and the shift pulses S1S15 causes the fifteen bit code group to be shifted out of the register 101 to the utilization device 15. The parity bits P 1r are prevented from reaching the utilization device 15 since AND gates 172 and 173 are closed during the corresponding times in the cycle. As the fifteen bit code group is shifted out of the register 101, the next fifteen bit code group is shifted into the register from the input AND gate 114.

The charts of FIGS. 661-66 illustrate the operation of the decoder when an error exists in the code group as received. In FIG. 6a it is assumed that the encoder has transmitted the same code group as in FIG. 6, but that during transmission a triple adjacent error has occurred starting in the tenth bit position. The fifteen bit code group as received is shown in FIG. 6a, with bit positions 10, 11 and 12 (D rr and P all in error.

The operation of the decoder up to the time clock pulse C10 is supplied to the input AND gate 141 is identical to that discussed in connection with FIG. 6. However, since D W and P are 101 in this instance (rather than 010) the P P stages of the locator parity bit storage register 112 are set to different values during the remaining portion of the cycle. The 11- and 11- stages of the error-type storage register 123 are also affected as shown.

The condition of P -1r stages of the registers are shown in FIG. 6a from clock times C9-Cl5. It will be seen that at the end of clock pulse time C15, P -1r are not all Os, but that P and P are each one. The output terminal of OR gate 130 is therefore high and conditions AND gate 131. The delayed clock pulse C15 therefore is supplied to terminal 132a of the error trigger 132 causing it to change states. The normally high no-error signal from output terminal 132k changes to a low state, While the normally low error signal from output terminal 132:: changes to a high state. Clock pulses Cl-ClS are therefore prevented from conditioning input AND gate 114 and the clock pulse AND gate 107A is disabled by the no-error signal which is low. Similarly, the output AND gates 172 and 173, and AND gate 101A associated with the shift register 101 are also disabled by the no-error signal changing from its normally high condition to a low condition.

On the other hand, the error output signal from terminal 132C conditions the AND gate 108A associated with the source of shift pulses 108. As a result shift pulses $16-$30 are supplied to the error type determining means and the error correcting means 106. Shift pulses $16-$30 may correspond to shift pulses S1-S15, but are generated only during an error cycle of the decoder. The error output signal from terminal 1320 also turns On the forward drive trigger 161 which conditions AND gate 160 of the error locating means 106 allowing the counter 156 to be advanced by shift pulses $16-$30 during the error cycle until a P-F compare signal is obtained.

During the error cycle of the decoder, the type of error is determined by means 105 and the location of the error is determined by means 106. The received code group remains stationary in the shift register 101, and, hence, no data is supplied to register 101 or taken from it. The m-sequence generators and 121 continually cycle since they are always supplied with shift pulses S1S15. At some time during the error cycle the condition of the msequence generator 110 will correspond to the condition of the locator parity bit storage register 112 and will cause the P-F compare unit 142 to generate a P-F compare signal. The P-F compare signal i employed to turn Off the forward drive trigger 161 and turn On the counter control trigger 141. As shown in FIG. 6b the P-F compare signal is obtained at the end of shift pulse S20 when the condition of the m-sequence generator is 0101 and corresponds to the locator parity bits P P Counter 156 is therefore in a 5-count condition having been supplied vvith shift pulses S16-S20.

Since the output signal from terminal 141b of the counter control trigger 141 is now high, AND gate 144 is conditioned supplying shift pulses beginning with S21 to advance the counter 140 until a 1rG compare signal turns the counter control trigger 141 to its initial state. In the illustrated example of a triple adjacent error no 1r-G compare signal is generated, and, hence, counter 140 is advanced to its farthest count position of 3, indicating a triple adjacent error.

It can be shown that if only a single error starting in bit position five had occurred 11, and would correspond to G and G respectively, at the end of shift pulse S20, and hence control trigger 141 would not change states at the end of shift pulse S20. Similarly, if a double adjacent error had occurred starting in bit position one, it can be shown that the 1r-G compare signal would be generated at the end of shift pulse S21, and hence counter 140 would be advanced only one count position. Also, if a double nonadjacent error had occurred starting in bit position 12 it can be shown that the 1r-G compare signal would be generated at the end of shift pulse S22. These conditions are tabulated below for reference.

SINGLE ERROR IN BIT POSITION FIVE #1 1r: G1 G Counter 140 S20 P-F Compare..- 1 0 1 0 1r-G Compare. 0

DOUBLE ERROR STARTING IN BIT POSITION ONE S20 P-F Compare" 1 1 1 0 0 S21 l 1 1 1 1r-G compare 1 DOUBLE NONADJACENT ERROR STARTING IN BIT POSITION TWELVE It will be seen that the state of counter 140 indicates the type of error that has occurred. With this information it is possible to determine the bit position where the error starts since the locator subwords for double adjacent errors, double nonadjacent errors and triple adjacent errors have a predetermined relation to the locator subwords for a single error.

The output of counter 140 is connected by suitable means (not shown), to both the count modification unit 157 and to the corrector modification unit 159. A 0-count signal from counter 140 does not operate either of the modification units. However, a l-count signal from counter 140 causes the count modification unit 157 to modify the state of the reversible counter 156 by four count conditions in the reverse direction from the count condition established by the forward driving pulses 816430. The state of the counter 156 at the end of shift pulse S21, as shown in FIG. 6b, is 1. The 2-count pulse signal from counter 140 causes a similar modification, and, hence, the count condition of counter 156 at the end of shift pulse S22 is twelve. The 3-count signal from counter 140 causes a modification of the counter 156 by two count positions, and, hence, at the end of shift pulse S23 the counter 156 reads ten. The -count condition is maintained through the remaining portion of the error cycle.

The 1, 2, and 3-count signals from counter also cause the corrector register to be modified so as to contain the appropriate corrector corresponding to the type of error indicated. The corrector is normally in a 001 condition, is changed to a 011 condition in response to a l-count signal, is changed to a 101 condition in response to a 2-count signal, and is again changed to a 111 condition by a 3-count signal. The 111 condition of the corrector register is maintained for the completion of the error cycle.

As shown in FIG. 6b, at the end of shift pulse S30, which is the last shift pulse of the error cycle, the reversible counter is at a 10-count condition and the corrector register is at a 111 condition. Shift pulse S30 resets error trigger 132 to its original condition, and also turns On the reverse drive trigger 166, which conditions AND gate 167. Shift pulse S30 is also supplied to the correct-command trigger 164 which conditions AND gate 165.

The decoder 12 then enters a normal cycle where shift pulses Sl-S15 shift the code group contained in shift register 101 to the utilization device 15 and at the same time allows a new fifteen bit code group to be entered into the shift register. This cycle corresponds to that shown in FIG. 6, except that the reversible counter 156 is also supplied with shift pulses Sl-SlS through AND gate 167. When the counter 156 reaches a l-count condition, a signal is supplied to AND gate 165, which provides a correct-command signal to gate unit 158G. It will be seen from FIG. 60 that when the counter 156 reaches a l-count condition, the bit position where the error starts is in the last stage of the shift register 101. In the assumed example of a triple adjacent error the corrector register is set to 111 so that when gate unit 1586 is supplied with the correct-command signal. from AND gate the binary values of the bits in stages 13, 14 and 15 (101) are changed to 010 thereby correcting the triple adjacent error. The corrected bits and the following bits are subsequently shifted out of the shift register 101 in the normal manner. The 0-count signal from the counter 156 resets the reverse drive trigger 166 and the command trigger 164.

It will thus be seen that the above described error correcting system insures that the data supplied to the utilization device 15 is accurate.

Various modifications to both the encoder and the decoder will become apparent to those persons skilled in the art. For example, while the m-sequence generators have been shown and described as maximal length binary shift registers they may, of course, be replaced by any suitable device providing the same function. For example, since the m-sequence generators 110 and 121 run continually they may be readily substituted by corresponding recorded signals. Alternately, a suitable delay line device could also be employed. It should also be noted that the error cycle defined by shift pulses $16530 need not nec- 1. In combination with an information handling systern having a source of binary coded multi-bit data signals and a device for utilizing said signals, an error correcting system interconnecting said data source and said utilization device operable to detect, locate and correct a plurality of different types of related errors occurring during the translation of said data signals to said device, said correcting system including an encoder, a detector, and signal translating means connected therebetween, said encoder comprising means for supplying to said signal translating means a code group signal consisting of a predetermined number of data bits, a predetermined number of locator parity bits and a predeter mined number of error-type parity bits, said supplying means including means for generating said locator parity bits from bit positions of said code group signal determined by a first m-sequence and means for generating said error-type parity bits from bit positions determined by a second m-sequence, said decoder comprising means for generating reception parity bits from said code group signal as received over bit positions determined by said m-sequences, and means under the control of said generated reception parity bits operable to correct any one of said diiferent types of related errors prior to supplying an erroneous data bit to said utilization device.

2. The combination recited in claim. 1 in which said locator parity bit generating means comprises a storage register having one stage for each locator parity bit to be generated, a plurality of sampling circuits each having an output terminal connected to a different said stage, means for sequentially supplying bits of said data signal to each of said sampling circuits, and an m-sequencc generator connected to said sampling circuits for supplying trains of sampling signals thereto corresponding to said m-sequence.

3. The combination recited in claim -Z in whichsaid error-type parity bit generating means comprises a stor age register having one stage for each error-type parity bit to be generated, a plurality of sampling circuits each having an output terminal connected to a different said stage means, for sequentially supplying bits of said data signal to said sampling circuits, and an m-sequence generator connected to said sampling circuits to supply trains of sampling signals thereto corresponding to said second m-seque'nce.

4. The combination recited in claim 3 in which said m-sequence generators comprise maximal length binary shift registers.

5. The combination recited in claim 1 in which said reception parity bit generating means includes means for generating a plurality of locator reception parity bits from bit positions of the received signal determined .,by said first m-sequence and a plurality of error type reception parity bits from bit positions of said received signal determined by said second m-sequence.

6. The combination recited in claim 5 in which said locator reception parity bit generating means and said error-type reception parity bit generating means each comprises an m-sequence generator, a sampling circuit responsive to said m-sequence generator and the bits in the received signal and a storage register for storing the outputs of said sampling circuit.

7. The combination recited in claim 6 in which said m-sequence generators comprise maximal length binary shift registers.

8. A system operable to detect locate and correct 2 2 types of related errors in a transmitted code group of N binary bit positions consisting of K locator parity bits, K error-type parity bits and M data bits where N22 1--1, comprising in combination an encoder, a decoder, and means connected therebetween for transmitting said code group from said encoder to said decoder, said encoder comprising means for generating K locator parity bits over bit positions of said code group determined in accordance with a first m-sequence, means for generating K error-type parity bits over bit positions of said code group determined in accordance with a second m-sequence, and means for supplying said parity bits and said data bits to said transmitting means in a predetermined order, said decoder comprising means to receive said transmitted code group, means for making a re ception parity check over bit positions of said received code group in accordance with said m-sequences to provide K +K parity bits and circuit means under the control of said K +K parity bits for detecting the presence of an error, determining the type of error, locating the position of said error 'and correcting said error.

9. The combination recited in claim 8 in which the means for making said reception parity check comprises first and second m-sequence generating means for generating first and second m-sequence signals and means responsive to said first and second m-sequence signals to provide the K +K parity bits.

10. The combination recited in claim 9 and first and second register means responsive to said first and second m-sequence signals to store said parity bits.

11. The invention recited in claim 10 in which said circuit means for detecting an'error includes logic means connected to said register means for generating an error signal in response to a predetermined condition of said stored parity bits.

12. The invention recited in claim 11 in which said circuit means for determining the type of error comprises a counter, means for enabling said counter in response to a predetermined relationship between said fist m-sequence generator and said first register means, and means for disabling said counter in response to a predetermined relationship between said second m-sequence generator and said. second register.

13. The invention recited in claim 12 in which said circuit means for locating the position of said error including a second counter, means for enabling said second counter in response to said error signal, means 'for disabling said second counter in response to said predeterr'nined relationship between said first m-sequence generator and said first register, and means for modifying the condition of said second counter under the control of the count condition of said first counter whereby the modified count condition of said second counter provides an indication of bit position in said code group where said error is located.

14. The invention recited in claim 13 in which said circuit means for correcting said error comprises a corrector register, means for controlling the condition of said corrector register in response to the condition of said first counter, and means for supplying a corrector to said code group under the control of said second counter whereby said error is corrected.

References Cited by the Examiner UNITED STATES PATENTS 2,552,629 5/51 Hamming 340 147 2,926,215 2/60 Slepian 178-23 2,954,433 9/60 Lewis 340146.1 2,956,124 10/60 Hagelbarger 178-23 MALCQLM A. MORRISON, Primary Examiner.

IRVING L. SRAGOW, STEPHEN W. CAPELLI,

Examiners, 

1. IN COMBINATION WITH AN INFORMATION HANDLING SYSTEM HAVING A SOURCE OF BINARY CODED MULTI-BIT DATA SIGNALS AND A DEVICE FOR UTILIZING SAID SIGNALS, AND ERROR CORRECTING SYSTEM INTERCONNECTING SAID DATA SOURCE AND SAID UTILIZATION DEVICE OPERABLE TO DETECT, LOCATE AND CORRECT A PLURALITY OF DIFFERENT TYPES OF RELATED ERRORS OCCURRING DURING THE TRANSLATION OF SAID DATA SIGNALS TO SAID DEVICE, SAID CORRECTING SYSTEM INCLUDING AN ENCODER, A DETECTOR, AND SIGNAL TRANSLATING MEANS CONNECTED THEREBETWEEN, SAID ENCODER COMPRISING MEANS FOR SUPPLYING TO SAID SIGNAL TRANSLATING MEANS A CODE GROUP SIGNAL CONSISTING OF A PREDETERMINED NUMBER OF DATA BITS, A PREDETERMINED NUMBER OF LOCATOR PARITY BITS AND A PREDETERMINED NUMBER OF ERROR-TYPE PARITY BITS, SAID SUPPLYING MEANS INCLUDING MEANS FOR GENERATING SAID LOCATOR PARITY BITS FROM BIT POSITIONS OF SAID CODE GROUP SIGNAL DETERMINED BY A FIRST M-SEQUENCE AND MEANS FOR GENERATING SAID ERROR-TYPE PARITY BITS FROM BIT POSITIONS DETERMINED BY A SECOND M-SEQUENCE, SAID DECODER COMPRISING MEANS FOR GENERATING RECEPTION PARITY BITS FROM SAID CODE GROUP SIGNAL AS RECEIVED OVER BIT POSITIONS DETERMINED BY SAID M-SEQUENCES, AND MEANS UNDER THE CONTROL OF SAID GENERATED RECEPTION PARITY BITS OPERABLE TO CORRECT ANY ONE OF SAID DIFFERENT TYPES OF RELATED ERRORS PRIOR TO SUPPLYING AN ERRONEOUS DATA BIT TO SAID UTILIZATIN DEVICE. 